import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';

// 定义公开路由
const publicRoutes = [
  '/',
  '/sign-in',
  '/sign-up',
  '/api/webhook',
];

// 检查路径是否在公开路由列表中
function isPublicRoute(path: string) {
  return publicRoutes.some(route => 
    path === route || 
    path.startsWith(`${route}/`) || 
    path.startsWith(`${route}?`)
  );
}

// 中间件函数
export function middleware(request: NextRequest) {
  const path = request.nextUrl.pathname;
  
  // 如果是公开路由，直接允许访问
  if (isPublicRoute(path)) {
    return NextResponse.next();
  }
  
  // 实际项目中，这里应该检查用户是否已认证
  // 这里暂时使用模拟逻辑
  const isAuthenticated = true; // 模拟用户已登录
  
  // 如果用户未认证，重定向到登录页面
  if (!isAuthenticated) {
    return NextResponse.redirect(new URL('/sign-in', request.url));
  }
  
  // 允许访问受保护的路由
  return NextResponse.next();
}

// 配置匹配的路由
export const config = {
  matcher: ['/((?!.+\\.[\\w]+$|_next).*)', '/', '/(api|trpc)(.*)'],
}; 